using System.Collections;
using System.Collections.Generic;
using Unity.Collections;
using UnityEngine;

public class ParallaxBackground : MonoBehaviour
{
    private GameObject cam;
    [SerializeField] private float parallaxEffect;//与相机移动相差的倍数 <1图片跟不上相机，看起来会移动
    private float xPosition;
    private float length;
    void Start()
    {
        cam = GameObject.Find("Main Camera");//获取相机

        xPosition = transform.position.x;// 记录初始位置
        length = GetComponent<SpriteRenderer>().bounds.size.x;// 获取背景长度
    }

    void Update()
    {
        float distanceMove = cam.transform.position.x * (1 - parallaxEffect);//相机相对背景实际移动的距离
        float distanceToMove = cam.transform.position.x * parallaxEffect;//计算背景应该移动的距离
        //如parallaxEffect设置0.9，相机移动1像素，
        // （distanceToMove）则背景移动0.9像素，背景移动速度比相机慢0.1倍，
        // （distanceMove）实际上相机相对背景只移动了0.1像素，
        // 当实际移动超过背景长度则移动整一个背景

        transform.position = new Vector3(xPosition + distanceToMove, transform.position.y);//移动背景

        if (distanceMove > xPosition + length)
        {
            xPosition += length;
        }
        else if (distanceMove < xPosition - length)
        {
            xPosition -= length;
        }

    }
}
